1. Field of the Invention
The invention pertains generally to computers. In particular, it pertains to computer memory.
2. Description of the Related Art
Flash memory is commonly used for applications that require a non-volatile memory to store code and data that must be retained when power to the memory is removed, but which can be re-written when necessary during operation. Flash memory is favored because it can be written and erased while in-circuit, and because it has read access times comparable to static random access memory (SRAM). Its primary disadvantage is that it can only be erased in blocks, with a block typically being several thousand bytes, and the erase function can take a relatively long time to accomplish. This makes minor changes to the memory contents somewhat cumbersome to perform.
Generic flash memory can be manufactured and then provided to multiple equipment makers who place the flash memory into various products that have differing memory configuration requirements. Some of these configuration requirements deal with the way memory is partitioned, such as by providing predefined protected blocks that cannot be rewritten without having special access privileges. Other requirements may deal with the polarity of certain memory interface signals, such as whether address lines are to be sampled on a rising or falling edge of a clock. Certain memory addresses may be reserved for specific functions external to memory. These and/or other configuration data are typically placed into non-volatile locations during the manufacturing or assembly stages, where they effectively become permanent. When the product is placed into operation, this configuration information is retrieved and loaded each time the system is rebooted or otherwise reset. However, if the configuration data is programmed during memory manufacture, a different configuration must be manufactured for each customer and each product. If it is programmed during assembly of that product by the customer, the customer must acquire, operate, and maintain the equipment for this one-time programming operation. Further, changes in the product that require changes in the configuration may require the customer to physically replace and discard the existing memories in existing products, a field upgrade procedure that can be extremely expensive.
Some product makers may wish to design their product so that the configuration can be temporarily changed for some specific function, thus requiring the configuration to be reprogrammable while in-circuit, a feat that is not feasible in a conventional system with the configuration in permanent memory.
A conventional alternative to this permanently-programmed configuration is to place the configuration data in a volatile register, which requires the register to be reloaded every time the power turned on. This adds to the system start-up overhead, which should be minimized in many products. This approach also requires the configuration data to be placed into some other non-volatile but programmable location when the power is off so that it will be available to be reloaded when power is turned on.
The inherent limitations in these two configuration methods can force the manufacturers to choose between two imperfect approaches, and accept the disadvantages of the choice they make.